Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.sound.midi
Class ShortMessage

    java.lang.Object
      |
      +--javax.sound.midi.MidiMessage
            |
            +--javax.sound.midi.ShortMessage

All Implemented Interfaces:
  Cloneable

public class ShortMessage
extends MidiMessage

A `ShortMessage` contains a MIDI message that has at most two data bytes following its status byte. The types of MIDI message that satisfy this criterion are channel voice, channel mode, system common, and system real-time--in other words, everything except system exclusive and meta-events. The `ShortMessage` class provides methods for getting and setting the contents of the MIDI message.

A number of `ShortMessage` methods have integer parameters by which you specify a MIDI status or data byte. If you know the numeric value, you can express it directly. For system common and system real-time messages, you can often use the corresponding fields of `ShortMessage`, such as `SYSTEM_RESET`. For channel messages, the upper four bits of the status byte are specified by a command value and the lower four bits are specified by a MIDI channel number. To convert incoming MIDI data bytes that are in the form of Java's signed bytes, you can use the conversion code given in the ``MidiMessage`` class description.

See Also:
  `SysexMessage`, `MetaMessage`

Field Summary
`static int` | `ACTIVE_SENSING` Status byte for Active Sensing message (0xFE, or 254).
`static int` | `CHANNEL_PRESSURE` Command value for Channel Pressure (Aftertouch) message (0xD0, or 208)
`static int` | `CONTINUE` Status byte for Continue message (0xFB, or 251).
`static int` | `CONTROL_CHANGE` Command value for Control Change message (0xB0, or 176)
`static int` | `END_OF_EXCLUSIVE` Status byte for End of System Exclusive message (0xF7, or 247).
`static int` | `MIDI_TIME_CODE` Status byte for MIDI Time Code Quarter Frame message (0xF1, or 241).
`static int` | `NOTE_OFF` Command value for Note Off message (0x80, or 128)
`static int` | `NOTE_ON` Command value for Note On message (0x90, or 144)
`static int` | `PITCH_BEND` Command value for Pitch Bend message (0xE0, or 224)
`static int` | `POLY_PRESSURE` Command value for Polyphonic Key Pressure (Aftertouch) message (0xA0, or 128)
`static int` | `PROGRAM_CHANGE` Command value for Program Change message (0xC0, or 192)
`static int` | `SONG_POSITION_POINTER` Status byte for Song Position Pointer message (0xF2, or 242).
`static int` | `SONG_SELECT` Status byte for MIDI Song Select message (0xF3, or 243).
`static int` | `START` Status byte for Start message (0xFA, or 250).
`static int` | `STOP` Status byte for Stop message (0xFC, or 252).
`static int` | `SYSTEM_RESET` Status byte for System Reset message (0xFF, or 255).
`static int` | `TIMING_CLOCK` Status byte for Timing Clock messagem (0xF8, or 248).
`static int` | `TUNE_REQUEST` Status byte for Tune Request message (0xF6, or 246).

Fields inherited from class javax.sound.midi.MidiMessage
`data, length`

Constructor Summary
`` | `ShortMessage()` Constructs a new `ShortMessage`.
`protected` | `ShortMessage(byte[] data)` Constructs a new `ShortMessage`.

Method Summary
`Object` | `clone()` Creates a new object of the same class and with the same contents as this object.
`int` | `getChannel()` Obtains the MIDI channel associated with this event.
`int` | `getCommand()` Obtains the MIDI command associated with this event.
`int` | `getData1()` Obtains the first data byte in the message.
`int` | `getData2()` Obtains the second data byte in the message.
`protected int` | `getDataLength(int status)` Retrieves the number of data bytes associated with a particular status byte value.
`void` | `setMessage(int status)` Sets the parameters for a MIDI message that takes no data bytes.
`void` | `setMessage(int status, int data1, int data2)` Sets the parameters for a MIDI message that takes one or two data bytes.
`void` | `setMessage(int command, int channel, int data1, int data2)` Sets the short message parameters for a channel message which takes one or two data bytes.

Methods inherited from class javax.sound.midi.MidiMessage
`getLength, getMessage, getStatus, setMessage`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### MIDI_TIME_CODE

    public static final int MIDI_TIME_CODE

  Status byte for MIDI Time Code Quarter Frame message (0xF1, or 241).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### SONG_POSITION_POINTER

    public static final int SONG_POSITION_POINTER

  Status byte for Song Position Pointer message (0xF2, or 242).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### SONG_SELECT

    public static final int SONG_SELECT

  Status byte for MIDI Song Select message (0xF3, or 243).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### TUNE_REQUEST

    public static final int TUNE_REQUEST

  Status byte for Tune Request message (0xF6, or 246).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### END_OF_EXCLUSIVE

    public static final int END_OF_EXCLUSIVE

  Status byte for End of System Exclusive message (0xF7, or 247).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### TIMING_CLOCK

    public static final int TIMING_CLOCK

  Status byte for Timing Clock messagem (0xF8, or 248).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### START

    public static final int START

  Status byte for Start message (0xFA, or 250).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### CONTINUE

    public static final int CONTINUE

  Status byte for Continue message (0xFB, or 251).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### STOP

    public static final int STOP

  Status byte for Stop message (0xFC, or 252).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### ACTIVE_SENSING

    public static final int ACTIVE_SENSING

  Status byte for Active Sensing message (0xFE, or 254).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### SYSTEM_RESET

    public static final int SYSTEM_RESET

  Status byte for System Reset message (0xFF, or 255).

  See Also:
    `MidiMessage.getStatus()`, Constant Field Values

### NOTE_OFF

    public static final int NOTE_OFF

  Command value for Note Off message (0x80, or 128)

  See Also:
    Constant Field Values

### NOTE_ON

    public static final int NOTE_ON

  Command value for Note On message (0x90, or 144)

  See Also:
    Constant Field Values

### POLY_PRESSURE

    public static final int POLY_PRESSURE

  Command value for Polyphonic Key Pressure (Aftertouch) message (0xA0, or 128)

  See Also:
    Constant Field Values

### CONTROL_CHANGE

    public static final int CONTROL_CHANGE

  Command value for Control Change message (0xB0, or 176)

  See Also:
    Constant Field Values

### PROGRAM_CHANGE

    public static final int PROGRAM_CHANGE

  Command value for Program Change message (0xC0, or 192)

  See Also:
    Constant Field Values

### CHANNEL_PRESSURE

    public static final int CHANNEL_PRESSURE

  Command value for Channel Pressure (Aftertouch) message (0xD0, or 208)

  See Also:
    Constant Field Values

### PITCH_BEND

    public static final int PITCH_BEND

  Command value for Pitch Bend message (0xE0, or 224)

  See Also:
    Constant Field Values

Constructor Detail

### ShortMessage

    public ShortMessage()

  Constructs a new `ShortMessage`. The contents of the new message are guaranteed to specify a valid MIDI message. Subsequently, you may set the contents of the message using one of the `setMessage` methods.

See Also:
  `setMessage(int)`

### ShortMessage

    protected ShortMessage(byte[] data)

  Constructs a new `ShortMessage`.

Parameters:
  `data` - an array of bytes containing the complete message. The message data may be changed using the `setMessage` method.
See Also:
  `setMessage(int)`

Method Detail

### setMessage

    public void setMessage(int status)
                    throws InvalidMidiDataException

  Sets the parameters for a MIDI message that takes no data bytes.

  Parameters:
    `status` - the MIDI status byte
  Throws:
    ``InvalidMidiDataException`` - if `status` does not specify a valid MIDI status byte for a message that requires no data bytes.
    `InvalidMidiDataException`
  See Also:
    `setMessage(int, int, int)`, `setMessage(int, int, int, int)`

### setMessage

    public void setMessage(int status,
                           int data1,
                           int data2)
                    throws InvalidMidiDataException

  Sets the parameters for a MIDI message that takes one or two data bytes. If the message takes only one data byte, the value passed in for the second data byte should be 0.

  Parameters:
    `status` - the MIDI status byte
    `data1` - the first data byte
    `data2` - the second data byte
  Throws:
    ``InvalidMidiDataException`` - if the the status or data bytes do not specify a valid MIDI message
    `InvalidMidiDataException`
  See Also:
    `setMessage(int, int, int, int)`, `setMessage(int)`

### setMessage

    public void setMessage(int command,
                           int channel,
                           int data1,
                           int data2)
                    throws InvalidMidiDataException

  Sets the short message parameters for a channel message which takes one or two data bytes. If the message only takes one data byte, the second data byte value passed should be 0.

  Parameters:
    `command` - the MIDI command represented by this message
    `channel` - the channel associated with the message
    `data1` - the first data byte
    `data2` - the second data byte
  Throws:
    ``InvalidMidiDataException`` - if the parameter values do not specify a valid MIDI message
    `InvalidMidiDataException`
  See Also:
    `setMessage(int, int, int)`, `setMessage(int)`, `getCommand()`, `getChannel()`, `getData1()`, `getData2()`

### getChannel

    public int getChannel()

  Obtains the MIDI channel associated with this event. This method assumes that the event is a MIDI channel message; if not, the return value will not be meaningful.

  Returns:
    MIDI channel associated with the message.
  See Also:
    `setMessage(int, int, int, int)`

### getCommand

    public int getCommand()

  Obtains the MIDI command associated with this event. This method assumes that the event is a MIDI channel message; if not, the return value will not be meaningful.

  See Also:
    `setMessage(int, int, int, int)`

### getData1

    public int getData1()

  Obtains the first data byte in the message.

  Returns:
    the value of the `data1` field
  See Also:
    `setMessage(int, int, int)`

### getData2

    public int getData2()

  Obtains the second data byte in the message.

  Returns:
    the value of the `data2` field
  See Also:
    `setMessage(int, int, int)`

### clone

    public Object clone()

  Creates a new object of the same class and with the same contents as this object.

  Specified by:
    `clone` in class `MidiMessage`
  Returns:
    a clone of this instance.

### getDataLength

    protected final int getDataLength(int status)
                               throws InvalidMidiDataException

  Retrieves the number of data bytes associated with a particular status byte value.

  Parameters:
    `status` - status byte value, which must represent a short MIDI message
  Returns:
    data length in bytes (0, 1, or 2)
  Throws:
    ``InvalidMidiDataException`` - if the `status` argument does not represent the status byte for any short message
    `InvalidMidiDataException`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Java, Java 2D, and JDBC are trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.